const { defineConfig } = require('@vue/cli-service');
const webpack = require("webpack");
const productionGzipExtensionsc = ['js', 'css'];
const CompressionPlugin = require('compression-webpack-plugin');
module.exports = defineConfig({
  //去除vue打包后js目录下生成的.map文件，用于加速生产环境构建
  productionSourceMap: false,
  publicPath: process.env.NODE_ENV === "production" ? "./" : "/",
  pwa: {

    iconPaths: {

      favicon32: 'favicon.ico',

      favicon16: 'favicon.ico',

      appleTouchIcon: 'favicon.ico',

      maskIcon: 'favicon.ico',

      msTileImage: 'favicon.ico'

    }

  },
  configureWebpack: {
    plugins: [
      new webpack.ProvidePlugin({
        $: "jquery",
        jquery: "jquery",
        jQuery: "jquery",
        "windows.jQuery": "jquery",
      }),
      new CompressionPlugin({
        //[file] 会被替换成原始资源。[path] 会被替换成原始资源的路径， [query] 会被替换成查询字符串。默认值是 "[path].gz[query]"。
        filename: '[path][base].gz', // 提示compression-webpack-plugin@3.0.0的话asset改为filename
        //可以是 function(buf, callback) 或者字符串。对于字符串来说依照 zlib 的算法(或者 zopfli 的算法)。默认值是 "gzip"。
        algorithm: 'gzip',
        //所有匹配该正则的资源都会被处理。默认值是全部资源。
        test: new RegExp('\\.(' + productionGzipExtensionsc.join('|') + ')$'),
        //只有大小大于该值的资源会被处理。单位是 bytes。默认值是 0。
        threshold: 10240,
        //只有压缩率小于这个值的资源才会被处理。默认值是 0.8。
        minRatio: 0.8
      })
    ],

  },
  transpileDependencies: true,
  //关闭组件名校验
  lintOnSave: false,
  devServer: {
    host: process.env.VUE_APP_BASE_HOST,//本地地址
    port: process.env.VUE_APP_BASE_PORT,//端口号
    hot: true,//热更新自动刷新
    open: true,//自动打开
    proxy: {
      "/api": {
        target: process.env.VUE_APP_BASE_TARGET,//代理地址 凡是使用/api
        changeOrigin: true,//允许跨域请求
        ws: false,
        secure: false,
        pathRewrite: { //重写路径 替换请求地址中的指定路径
          ['^/api']: '/' //将请求地址中的api替换为空
        }
      }
    }
  }
},
);


